package main

import "fmt"

/**
map在使用之前必须用make来创建，值为nil的map是空的，并且不能对其赋值

修改：m[key] = elme
获取：elme = m[key]
删除：delete(m, key)
检测：elme, ok = m[key]	//通过双赋值，检测某个键存在
//检测中，如果key存在，那么ok=true，elme是m[key]的值
//检测中，如果key不存在，那么ok=false，elme是m[key]类型的零值
*/

type Point struct {
	X, Y, Z int
}

var m map[string]Point

var n = map[string]Point{
	"Px": Point{1, 2, 3},
	"Py": Point{4, 5, 6}}

//可以省略Point，对比n和l即可看出区别
var l = map[string]Point{
	"Px": {1, 2, 3},
	"Py": {4, 5, 6},
}

func main() {
	m = make(map[string]Point)
	m["P1"] = Point{1, 2, 3}

	fmt.Println(m)

	fmt.Println(m["P1"])

	fmt.Println(n)

	elme, ok := m["P5"]
	fmt.Println("elme == ", elme)
	fmt.Println("ok == ", ok)

}
